<?php
  //用于记录信息到日志中的类。
  //思路：给定内容，写入文件。如果文件大于1M，重新写一份。
  //传给我一个内容，判断当前日志大小，如果>1M，则备份。否则写入。
  defined('ACC')||exit('ACC Denied'); 
  class log{
      const LOGFILE = 'curr.log';//建一个常量，代表日志文件的名称。
      
      
      //写日志
      public static function write($cont){
          $cont .= "\r\n";
          //判断是否备份
          $log = self::isBak();//计算出日志文件的地址
          $fh = fopen($log, 'a');
          fwrite($fh, $cont);
          fclose($fh);    
          
      }
      //备份日志
      public static function bak(){
          //把原来的文件保存并重命名
          $log = ROOT . 'data/log/' . self::LOGFILE;
          $bak = ROOT . 'data/log/' . date('ymd') . mt_rand(10000,99999) . '.bak';
          rename($log, $bak);
      }
      //读取并判断日志的大小，返回M为单位。
      public static function isBak(){
          $log = ROOT . 'data/log/' . self::LOGFILE;
          if(!file_exists($log)){//如果文件不存在则创建该文件
              touch($log);//touch是快速的简历文件。
              return $log;
          }
          //清楚缓存
          //clearstatcache(true,$log);
          clearstatcache();
          $size = filesize($log);
          if($size <= 1024 * 1024){
              return $log;
          }
          if(!self::Bak()){
              return $log;
          }else{
              touch($log);
              return $log;
          }  
      }   
  }
          
?>
